1. Field of the Invention
The present invention relates to the field of network communications. More specifically, the present invention relates to the use of a phased learning approach to determine the closest content serving site to a user or server.
2. The Background
In a distributed computer network, content sites may be distributed throughout a network, each site containing identical content to at least one of the other distributed sites. This allows for both load balancing among multiple sites as well as for faster connections as users may connect to a server which is closest (in terms of transit time) to their own computer.
This design has gained acceptance on the Internet, where it is routine for large content distributors to maintain multiple servering locations throughout the Internet. When one server is busy, traffic may merely be directed to a different server. Likewise, if one server is down for repairs, traffic may merely be directed to a different server. Finally, and perhaps most importantly, when multiple servers are available, the traffic may merely be directed to the server that is closest to the user.
When a user requests content that is located on multiple distributed servers, the server having the lowest round-trip response time to the user's DNS Server must be determined. FIG. 1 is a block diagram illustrating a situation where a user requests content located on multiple distributed servers. PC 2 may be attempting to access content at “www.example.com”. Thus, it first requests Domain Naming System (DNS) resolution from Client DNS Server 4. Then Client DNS Server 4 queries the root DNS to determine the authoritative DNS server for example.com.
The Client DNS Server 4 may then query the authoritative DNS server for the domain www.example.com, which returns an NS record for www.example.com. The Client DNS server 4 may then query the global server load balancer 6 for the “www.example.com” domain. At the global server load balancer 6, the various servers 8a, 8b, 8c containing the content are known. The global server load balancer 6 then may query each of the servers 8a, 8b, 8c. The sites then respond by each sending a TCP/IP syn/ack packet to the client DNS server 4. The client DNS server 4 then receives the TCP/IP syn/ack packet and sends a reset (RST) packet back to each server 8a, 8b, 8c, resetting the syn/ack. This flows from the Client DNS server 4 to each server 8a, 8b, 8c directly.
When the servers 8a, 8b, 8c each receive the RST packet back, they may compute their respective transit times (by using the difference between the time they originally sent the syn/ack packet and the time they received the RST packet back). This information may then be passed to the global server load balancer 6. The global server load balancer may then compare the transit times of all of the servers 8a, 8b, 8c, determine which is the lowest, and inform the client DNS server 4 of the resolved IP address of the lowest timed site. The client DNS server 4 may create a record to the PC containing the information indicating the server with the lowest transit time, at which point the PC may connect to the IP address for that server to retrieve the content.
This can be a fairly time consuming process, especially when the number of servers hosting the content grows larger. The relative lack of speed of the process may be bearable when there are only 3 servers hosting the content, but when there are 3000, the delays while waiting for servers to respond can be costly. Thus, what is needed is a solution that directs a user to the appropriate server in the least amount of time, especially as the number of servers grows large.